/**
 * 错误处理中间件
 */
const config = require('../config');

// 捕获404错误并转发到错误处理器
const notFound = (req, res, next) => {
  const err = new Error(`找不到 - ${req.originalUrl}`);
  err.status = 404;
  next(err);
};

// 错误处理器
const errorHandler = (err, req, res, next) => {
  const isDevelopment = config.app.env === 'development';
  
  // 设置状态码
  const statusCode = err.status || 500;
  
  // 构建错误响应
  const errorResponse = {
    error: statusCode === 404 ? '请求的资源不存在' : '服务器内部错误',
    message: err.message,
    ...(isDevelopment && { stack: err.stack })
  };
  
  // 开发环境下记录错误
  if (isDevelopment) {
    console.error(err);
  }
  
  // 发送错误响应
  res.status(statusCode).json(errorResponse);
};

module.exports = {
  notFound,
  errorHandler
};